The invention relates to a method and apparatus for locating touches on a touch sensor.
Two-dimensional (2D) touch screens, regardless of which technology is used, generally have a construction based on a matrix of sensor nodes that form a 2D array in Cartesian coordinates, i.e. a grid.
In a capacitive sensor, for example, each node is checked at each sampling interval to obtain the signal at that node, or in practice signal change from a predetermined background level. These signals are then compared against a predetermined threshold, and those above threshold are deemed to have been touched and are used as a basis for further numerical processing.
The simplest situation for such a touch screen is that a touch is detected by a signal that occurs solely at a single node on the matrix. This situation will occur when the size of the actuating element is small in relation to the distance between nodes. This might occur in practice when a stylus is used. Another example might be when a low resolution panel for finger sensing is provided, for example a 4×4 key matrix.
Often the situation is not so simple, and a signal arising from a touch will generate significant signal at a plurality of nodes on the matrix, these nodes forming a contiguous group. This situation will occur when the size of the actuating element is large in relation to the distance between nodes. In practice, this is a typical scenario when a relatively high resolution touch screen is actuated by a human finger (or thumb), since the finger touch will extend over multiple nodes.
For an increasing number of applications it is also necessary for the touch screen to be able to detect multiple simultaneous touches, so-called multitouch detection. For example, it is often required for the touch screen to be able to detect gestures, such as a pinching motion between thumb and forefinger. The above techniques can be extended to cater for multitouch detection.
An important initial task of the data processing is to process the raw data sets from each sampling interval to identify how many touches have occurred, and where. In particular, if a user makes two touches simultaneously, the device should be able to recognize this and not mistakenly identify the input as being only one touch. The converse is also true. To carry out this processing reliably, rapidly and with low memory and processing power, is not necessarily straightforward. A particular problem area is when multiple simultaneous touches are close together.
U.S. Pat. No. 5,825,352 [1] discloses an approach to identify multiple simultaneous touches from the raw signal level data output from a touch screen.
FIG. 1 illustrates this approach in a schematic fashion. In this example interpolation is used to create a curve in x, f(x), and another curve in y, f(y), with the respective curves mapping the variation in signal strength along each axis. Each detected peak is then defined to be a touch at that location. In the illustrated example, there are two peaks in x and one in y, resulting in an output of two touches at (x1, y1) and (x2, y2). As the example shows, this approach inherently caters for multitouch as well as single touch detection. The multiple touches are distinguished based on the detection of a minimum between two maxima in the x profile. This approach is well suited to high resolution screens, but requires considerable processing power and memory to implement.
This is undesirable in many high volume commercial applications. For example, for consumer products, where cost is an important factor, it is desirable to implement the touch detection processing in low complexity hardware, in particular microcontrollers. Therefore, although the kind of processing power being considered is extremely modest in the context of a microprocessor or digital signal processor, it is not insignificant for a microcontroller, or other low specification item, which has memory as well as processing constraints.